package com.zyf.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zyf.model.order.OrderInfo;
import com.zyf.vo.order.OrderCountQueryVo;
import com.zyf.vo.order.OrderQueryVo;

import java.util.Map;

/** 订单操作，业务类接口
 * @author zyf
 * @date 2021年05月31日 14:37
 */
public interface OrderInfoService extends IService<OrderInfo> {

    /**
     * 生成订单
     * @author zyf
     * @date 2021/5/31 14:48
     * @param scheduleId 排班id
     * @param patientId 就诊人id
     * @return java.lang.Long
     */
    Long submitOrder(String scheduleId, Long patientId);

    /**
     * 根据订单id查询订单的详细信息
     * @author zyf
     * @date 2021/6/2 14:21
     * @param orderId 订单id
     * @return com.zyf.model.order.OrderInfo
     */
    OrderInfo getOrder(String orderId);

    /**
     * 获取订单列表
     * @author zyf
     * @date 2021/6/2 14:54
     * @param pageParam 分页参数
     * @param queryVo 条件查询参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zyf.model.order.OrderInfo>
     */
    IPage<OrderInfo> selectPage(Page<OrderInfo> pageParam, OrderQueryVo queryVo);

    /**
     * 订单详情
     * @param orderId 订单id
     * @return
     */
    Map<String,Object> show(String orderId);

    /**
     * 取消订单
     * @author zyf
     * @date 2021/6/4 10:41
     * @param orderId 订单id
     * @return java.lang.Boolean
     */
    Boolean cancelOrder(String orderId);

    /**
     * 监听消息 就诊通知
     * @author zyf
     * @date 2021/6/4 16:37
     */
    void patientTips();

    /**
     * 统计预约挂号数量
     * @author zyf
     * @date 2021/6/4 17:05
     * @return java.util.List<com.zyf.vo.order.OrderCountVo>
     */
    Map<String,Object> selectOrderCount(OrderCountQueryVo orderCountQueryVo);
}
